package com.esun.dao.mapper;

import com.esun.dao.eo.ExampleEo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.core.annotation.Order;

import java.util.List;


/**
 * 样例表(Example)表数据库访问层
 *
 * @author John.xiao
 * @date 2021-08-05 14:46:43
 */
@Mapper
public interface ExampleMapper extends BaseMapper<ExampleEo> {
	/**
	 * 通过条件查询数据库行数
	 *
	 * @param entity 实例对象
	 * @return 通过条件查询数据库行数
	 */
	@Override
	int queryCount(ExampleEo entity);

	/**
	 * 通过ID查询单条数据
	 *
	 * @param id 主键
	 * @return 实例对象
	 */
	@Override
	ExampleEo queryById(Integer id);

	/**
	 * 查询指定行数据
	 *
	 * @param offset 查询起始位置
	 * @param limit 查询条数
	 * @return 对象列表
	 */
	@Override
	List<ExampleEo> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


	/**
	 * 通过实体作为筛选条件,根据排序条件批量查询
	 *
	 * @param  entity 实例对象列表
	 * @return 对象列表
	 */
	@Override
	List<ExampleEo> queryBatchBySort(ExampleEo entity);

	/**
	 * 通过实体作为筛选条件查询
	 *
	 * @param entity 实例对象
	 * @return 数据行数
	 */
	@Override
	List<ExampleEo> queryAll(ExampleEo entity);

	/**
	 * 新增数据
	 *
	 * @param entity 实例对象
	 * @return 影响行数
	 */
	@Override
	int insert(ExampleEo entity);

	/**
	 * 批量新增数据（MyBatis原生foreach方法）
	 *
	 * @param entities List<ExampleEo> 实例对象列表
	 * @return 影响行数
	 */
	@Override
	int insertBatch(@Param("entities") List<ExampleEo> entities);

	/**
	 * 批量新增或按主键更新数据（MyBatis原生foreach方法）
	 *
	 * @param entities List<ExampleEo> 实例对象列表
	 * @return 影响行数
	 */
	@Deprecated
	@Override
	int insertOrUpdateBatch(@Param("entities") List<ExampleEo> entities);

	/**
	 * 修改数据
	 *
	 * @param entity 实例对象
	 * @return 影响行数
	 */
	@Override
	int update(ExampleEo entity);

	/**
	 * 通过主键删除数据
	 *
	 * @param id 主键
	 * @return 影响行数
	 */
	@Override
	int deleteById(Integer id);

	/**
	 * 根据ID批量删除记录
	 *
	 * @param entities  List<ExampleEo> 实例对象列表
	 * @return 影响行数
	 */
	@Override
	int deleteByIdBatch(@Param("entities") List<ExampleEo> entities);

	/**
	 * 按照条件删除记录
	 *
	 * @param entity 实例对象
	 * @return 影响行数
	 */
	@Override
	int delete(ExampleEo entity);
}